<?php
//Ultima verificacion: 14-10-2014 ; 21-11-2014 ; 05-03-2015
class M_contenido_educativo extends CI_Model {
	function _construct(){
		//Call the Model constructor
		parent::_construct();
	}
	
	//Este metodo se utiliza cuando queremos obtener los contenidos educativos cargados a una clase en el formulario CREAR CLASE
	function buscarActivosEtapa1($restriccion=null){
		$consulta = $this->db->query("SELECT contenidoeducativo.*, 
											(SELECT hash FROM archivo WHERE archivo.idArchivo=contenidoeducativo.idArchivo LIMIT 1) AS hashArchivo,
											 DATE_FORMAT(contenidoeducativo.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											 DATE_FORMAT(contenidoeducativo.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM contenidoeducativo
									  WHERE contenidoeducativo.estado<>-1 AND contenidoeducativo.estado<>1 $restriccion
									  ORDER BY contenidoeducativo.nombre ASC");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos obtener los contenidos educactivos activos cargados a una clase en el formulario MODIFICAR CLASE
	function buscarActivosEtapa2($restriccion=null){
		$consulta = $this->db->query("SELECT contenidoeducativo.*, 
											(SELECT hash FROM archivo WHERE archivo.idArchivo=contenidoeducativo.idArchivo LIMIT 1) AS hashArchivo,
											 DATE_FORMAT(contenidoeducativo.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
											 DATE_FORMAT(contenidoeducativo.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM contenidoeducativo, clase
									  WHERE contenidoeducativo.idClase=clase.idClase AND 
											(contenidoeducativo.estado=1 OR contenidoeducativo.estado=0) AND clase.estado<>-1 $restriccion
									  ORDER BY contenidoeducativo.nombre ASC");
		return($consulta);
	}
	
	//Este metodo se utiliza para eliminar un contenido educativo tanto en el formulario CREAR COMO MODIFICAR CLASE
	function eliminar($idContenidoEducativo=null, $idDestructor=null){
		$consulta = $this->db->query("UPDATE `contenidoeducativo`
									 SET `estado` = -1,
										 `idDestructor` = ". $this->db->escape($idDestructor) ."
							         WHERE `contenidoeducativo`.`idContenidoEducativo` = " . $this->db->escape($idContenidoEducativo) . " LIMIT 1");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza para crear un contenido educativo en el formulario CREAR CLASE
	function crearEtapa1($hash=null, $idPersona=null, $nombre=null, $descripcion=null, $idArchivo=null, $tipoCreador=null, $estado=null, $idCreador=null){
		$this->db->query("INSERT INTO `contenidoeducativo` (`idContenidoEducativo`,`hash`,`idPersona`,`nombre`,`descripcion`,`idArchivo`,`tipoCreador`,`fechaCreacion`,`estado`,`idCreador`) VALUES 
														   (NULL,".$this->db->escape($hash).",".$this->db->escape($idPersona).",".$this->db->escape($nombre).",".$this->db->escape($descripcion).",".$this->db->escape($idArchivo).",".$this->db->escape($tipoCreador).",now(),".$this->db->escape($estado).",".$this->db->escape($idCreador).")");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza para crear un contenido educativo en el formulario MODIFICAR CLASE
	function crearEtapa2($idClase=null, $idPersona=null, $nombre=null, $descripcion=null, $idArchivo=null, $tipoCreador=null, $estado=null, $idCreador=null){
		$this->db->query("INSERT INTO `contenidoeducativo` (`idContenidoEducativo`,`idClase`,`idPersona`,`nombre`,`descripcion`,`idArchivo`,`tipoCreador`,`fechaCreacion`,`estado`,`idCreador`) VALUES 
														   (NULL,".$this->db->escape($idClase).",".$this->db->escape($idPersona).",".$this->db->escape($nombre).",".$this->db->escape($descripcion).",".$this->db->escape($idArchivo).",".$this->db->escape($tipoCreador).",now(),".$this->db->escape($estado).",".$this->db->escape($idCreador).")");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza para activar todos los contenidos educativos de una clase recien creada. Se usa en el formulario CREAR CLASE.
	function activar($idClase=null, $hash=null, $estado=null){
		$consulta = $this->db->query("UPDATE `contenidoeducativo` 
									 SET `idClase` = ". $this->db->escape($idClase) .",
										 `estado` = ". $this->db->escape($estado) ."
							         WHERE `contenidoeducativo`.`hash` = " . $this->db->escape($hash) . " AND 
									       `contenidoeducativo`.`estado` = -2");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza cuando queremos devolver un contenido en particular usado generalmente en el formulario de modificar
	function get($idContenidoEducativo=null, $restriccion=null){
		$consulta = $this->db->query("SELECT contenidoeducativo.*, asignatura.idAsignatura, asignatura.idDivision, clase.nombre AS nombreClase, asignatura.nombre AS nombreAsignatura, 
											(SELECT hash FROM archivo WHERE archivo.idArchivo=contenidoeducativo.idArchivo LIMIT 1) AS hashArchivo,
											DATE_FORMAT(contenidoeducativo.fechaCreacion,'%d/%m/%Y') AS fechaCreacionFormateada
									  FROM contenidoeducativo, clase, asignatura
									  WHERE contenidoeducativo.idClase=clase.idClase AND
											clase.idAsignatura=asignatura.idAsignatura AND
											contenidoeducativo.estado<>-1 AND 
											clase.estado<>-1 AND 
											asignatura.estado<>-1 AND 
											contenidoeducativo.idContenidoEducativo=".$this->db->escape($idContenidoEducativo)." $restriccion
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos devolver un contenido en particular usado generalmente en el formulario de crear contenido
	function get2($idContenidoEducativo=null, $restriccion=null){
		$consulta = $this->db->query("SELECT contenidoeducativo.*,
											(SELECT hash FROM archivo WHERE archivo.idArchivo=contenidoeducativo.idArchivo LIMIT 1) AS hashArchivo,
											DATE_FORMAT(contenidoeducativo.fechaCreacion,'%d/%m/%Y') AS fechaCreacionFormateada
									  FROM contenidoeducativo
									  WHERE contenidoeducativo.estado<>-1 AND											 
											contenidoeducativo.idContenidoEducativo=".$this->db->escape($idContenidoEducativo)." $restriccion
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos devolver el contenido contiguo contiguo a uno en particular usado generalmente en el formulario de modificar
	function getContiguo($idContenidoEducativo=null, $cant=null, $idClase=null){		
		do{
			$idContenidoEducativo+=$cant;
			$consulta = $this->db->query("SELECT *
										  FROM contenidoeducativo
										  WHERE idContenidoEducativo=".$this->db->escape($idContenidoEducativo)."
										  LIMIT 1");
			if($consulta->num_rows == 0)
				return(0);
			
		}while($consulta->row()->estado<>'1' || $consulta->row()->idClase != $idClase);
				
		return($consulta->row()->idContenidoEducativo);
	}
	
	//Este metodo se utiliza para modificar un contenido educativo
	function modificar($idContenidoEducativo=null, $nombre=null, $descripcion=null, $idArchivo=null, $estado=null){
		$consulta = $this->db->query("UPDATE `contenidoeducativo` 
									 SET `nombre` = ". $this->db->escape($nombre) .",
									     `descripcion` = ". $this->db->escape($descripcion) .",
										 `idArchivo` = ". $this->db->escape($idArchivo) .",
										 `estado` = ". $this->db->escape($estado) ."
							         WHERE `contenidoeducativo`.`idContenidoEducativo` = " . $this->db->escape($idContenidoEducativo) . " LIMIT 1");
		return($this->db->affected_rows());
	}
}
?>